// JavaScript与Java桥接接口
(function() {
    'use strict';
    
    // 消息ID计数器
    let messageId = 0;
    
    // 消息回调映射
    const callbacks = {};
    
    // 创建全局JsMethodApi对象
    window.JsMethodApi = {
        // 调用原生方法
        callNative: function(method, params, callback) {
            const id = ++messageId;
            
            // 存储回调函数
            if (callback) {
                callbacks[id] = callback;
            }
            
            // 构造消息对象
            const message = {
                id: id,
                method: method,
                params: params || {}
            };
            
            // 通过Android接口调用Java方法
            if (window.JsMethodApi && window.JsMethodApi.postMessage) {
                window.JsMethodApi.postMessage(JSON.stringify(message));
            } else if (typeof JsMethodApi !== 'undefined') {
                // 兼容性处理
                try {
                    JsMethodApi.postMessage(JSON.stringify(message));
                } catch (e) {
                    console.error('调用原生方法失败:', e);
                }
            } else {
                console.error('JsMethodApi接口未初始化');
            }
        },
        
        // 处理来自Java的回调
        handleCallback: function(id, result) {
            if (callbacks[id]) {
                callbacks[id](result);
                delete callbacks[id];
            }
        },
        
        // 发送消息到Java
        postMessage: function(message) {
            // 这个方法会被Android的JavascriptInterface重写
            console.log('发送消息到Java:', message);
        }
    };
    
    // 处理来自Java的消息回调
    window.jsRPC = {
        onJsCallFinished: function(response) {
            try {
                const data = typeof response === 'string' ? JSON.parse(response) : response;
                window.JsMethodApi.handleCallback(data.id, data.result);
            } catch (e) {
                console.error('处理回调失败:', e);
            }
        }
    };
    
    // 页面加载完成后的初始化
    document.addEventListener('DOMContentLoaded', function() {
        console.log('JavaScript接口已初始化');
    });
    
})();